#include <iostream>
#include <vector>
#include <string>

using namespace std;

string centerIsEle(string s, int i){
    int j = 1;
    while(i-j >= 0 && i+j < s.size()){
        if(s[i+j] != s[i-j]){
            return s.substr(i-j+1, 2*(j-1)+1);
        }
        j++;
    }
    return i+j < s.size() ? s.substr(0, 2*(j-1)+1) : s.substr(s.size()-1-2*(j-1), 2*(j-1)+1);
}

string centerIsLine(string s, int i){
    int j = i-1, n = 0;
    while(j-n >= 0 && i+n < s.size()){
        if(s[i+n] != s[j-n]){
            return s.substr(j-n+1, n>0?2*n:0);
        }
        n++;
    }
    return i+n < s.size() ? s.substr(0, n>0?2*n:0) : s.substr(s.size()-2*n, 2*n);
}

string longestPalindrome(string s) {
    string longest, t;
    for(int i = 0; i < s.size(); i++){
        t = centerIsEle(s, i); longest = longest.size() < t.size() ? t : longest;
        t = centerIsLine(s, i); longest = longest.size() < t.size() ? t : longest;
    }
    return longest;
}

int main(){
    string s = "cbbd";
    cout << longestPalindrome(s) << endl;
    return 0;
}
